package com.c2b.algorithm.leetcode.base;

/**
 * <a href='https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/'>长度为三且各字符不同的子字符串(Substrings of Size Three with Distinct Characters)</a>
 * <p>如果一个字符串不含有任何重复字符，我们称这个字符串为 好 字符串。</p>
 * <p>给你一个字符串 s ，请你返回 s 中长度为 3 的 好子字符串 的数量。</p>
 * <p>注意，如果相同的好子字符串出现多次，每一次都应该被记入答案之中。</p>
 * <p>子字符串 是一个字符串中连续的字符序列。</p>
 *
 * <p>
 * <b>示例：</b>
 * <pre>
 * 示例 1：
 *      输入：s = "xyzzaz"
 *      输出：1
 *      解释：总共有 4 个长度为 3 的子字符串："xyz"，"yzz"，"zza" 和 "zaz" 。
 *          唯一的长度为 3 的好子字符串是 "xyz" 。
 *
 * 示例 2：
 *      输入：s = "aababcabc"
 *      输出：4
 *      解释：总共有 7 个长度为 3 的子字符串："aab"，"aba"，"bab"，"abc"，"bca"，"cab" 和 "abc" 。
 *          好子字符串包括 "abc"，"bca"，"cab" 和 "abc" 。
 * </pre>
 * </p>
 * <p>
 * <b>提示：</b>
 * <ul>
 *     <li>1 <= s.length <= 100</li>
 *     <li>s 只包含小写英文字母</li>
 * </ul>
 * </p>
 *
 * @author c2b
 * @since 2024/1/18 15:33
 */
public class LC1876SubstringsOfSizeThreeWithDistinctCharacters_S {

    static class Solution {
        public int countGoodSubstrings(String s) {
            if (s.length() < 3) {
                return 0;
            }
            char first = s.charAt(0);
            char second = s.charAt(1);
            char third = s.charAt(2);
            int res = 0;
            for (int i = 0; i < s.length(); i++) {
                if (i % 3 == 0) {
                    first = s.charAt(i);
                } else if (i % 3 == 1) {
                    second = s.charAt(i);
                } else {
                    third = s.charAt(i);
                }
                if (i >= 2) {
                    if (first != second && second != third && first != third) {
                        ++res;
                    }
                }
            }
            return res;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.countGoodSubstrings("xyzzaz"));
        System.out.println(solution.countGoodSubstrings("aababcabc"));
    }
}
